package cn.b.sky.mes.andon.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.andon.model.Andon;
import cn.b.sky.mes.andon.model.MessageRule;
import cn.b.sky.mes.andon.model.condition.AndonCondition;

/**
 * 
 * <strong>Title : AndonDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.andon.dao<br></strong>
 * <strong>Description : </strong>按灯站点数据层接口<br> 
 * <strong>Create on : 2016年10月14日 下午1:16:38<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface AndonDao {

  /**
   * 
   * <strong>Title : getAndonListByCondition<br></strong>
   * <strong>Description : </strong>获取按灯数据列表<br> 
   * <strong>Create on : 2016年10月14日 下午3:42:32<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Andon>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Andon> getAndonListByCondition(AndonCondition condition);

  /**
   * 
   * <strong>Title : getAndonCountByCondition<br></strong>
   * <strong>Description : </strong>获取按灯数据数量<br> 
   * <strong>Create on : 2016年10月14日 下午3:43:19<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getAndonCountByCondition(AndonCondition condition);

  /**
   * 
   * <strong>Title : insertAndon<br></strong>
   * <strong>Description : </strong>保存按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午3:45:34<br></strong>
   * <p>
   * @param andon
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertAndon(Andon andon);

  /**
   * 
   * <strong>Title : updateAndon<br></strong>
   * <strong>Description : </strong>更新按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午3:47:21<br></strong>
   * <p>
   * @param andon
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateAndon(Andon andon);

  /**
   * 
   * <strong>Title : getAndonByCode<br></strong>
   * <strong>Description : </strong>根据按灯编号查按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午3:49:40<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonCode
   * @return
   * Andon
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Andon getAndonByCode(@Param("siteCode") String siteCode, @Param("workUnitCode") String workUnitCode,
      @Param("andonCode") String andonCode);

  /**
   * 
   * <strong>Title : deleteAndon<br></strong>
   * <strong>Description : </strong>删除按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午3:51:57<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteAndon(@Param("siteCode") String siteCode, @Param("workUnitCode") String workUnitCode,
      @Param("andonCode") String andonCode);

  /**
	 * <strong>Title : getAllAndonList<br></strong>
	 * <strong>Description : </strong>获取所有暗灯<br> 
	 * <strong>Create on : 2016年10月20日 下午5:52:21<br></strong>
	 * <p>
	 * @return
	 * List<Andon>
	 * @throws 
	 * @author ShiYing.Ke<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	List<Andon> getAllAndonList();

	/**
	 * <strong>Title : selectAndonListByMessageRule<br></strong>
	 * <strong>Description : </strong><br> 
	 * <strong>Create on : 2016年10月20日 下午6:11:21<br></strong>
	 * <p>
	 * @param rule
	 * @return
	 * List<Andon>
	 * @throws 
	 * @author ShiYing.Ke<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	List<Andon> selectAndonListByMessageRule(MessageRule rule);

	/**
	 * 
	 * <strong>Title : selectRunningAndonGroupByType<br></strong>
	 * <strong>Description : 查询正在运行中的andon,按照安灯类型分组</strong><br> 
	 * <strong>Create on : 2016-11-1 下午4:22:50<br></strong>
	 * <p>
	 * @param siteCode 工厂代码
	 * @param workUnitCode 作业单元（流水线）
	 * @param statusCode 状态码，状态不为关闭的
	 * @param andonType 安灯类型
	 * @return
	 * List<AndonTypeData>
	 * @throws 
	 * @author lidapeng<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 * <strong>修改历史:</strong><br>
	 * 修改人 | 修改日期 | 修改描述<br>
	 * -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
  int selectRunningAndonCountByType(
      @Param(value="siteCode")String siteCode, 
      @Param(value="workUnitCode")String workUnitCode,
      @Param(value="statusCode")String statusCode, @Param(value="andonType")String andonType);

  /**
   * 
   * <strong>Title : selectAllAndonsByAndonType<br></strong>
   * <strong>Description : </strong>获取安灯类型下面的所有安灯<br> 
   * <strong>Create on : 2016-11-3 下午2:26:30<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonType
   * @return
   * List<Andon>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Andon> selectAllAndonsByAndonType(@Param(value="siteCode")String siteCode, 
      @Param(value="workUnitCode")String workUnitCode,
      @Param(value="andonType")String andonType);

}
